package cn.bnjy.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 描述：
 *
 * @date: 2018/11/3 15:40
 * @author: chavin
 */
@Slf4j
public class DateUtils {

    private static final String formatterStr = "yyyy-MM-dd HH:mm:ss"; // 格式

    private DateUtils() {

    }

    /**
     * 返回当前时间，格式为yyyy-MM-dd HH:mm:ss的字符串
     *
     * @return
     */
    public static String getDateStr() {
        return getDateStr(null, null);
    }

    /**
     * 根据日式返回格式为yyyy-MM-dd HH:mm:ss的字符串
     *
     * @return
     */
    public static String getDateStr(Date date) {
        return getDateStr(date, null);
    }

    /**
     * 根据日期返回指定格式的字符串
     * @param date
     * @param formatter
     * @return
     */
    public static String getDateStr(Date date, String formatter) {
        String dateStr = "";
        try {
            date = date == null ? new Date() : date;
            formatter = StringUtils.isBlank(formatter) ? formatterStr : formatter;
            SimpleDateFormat sdf = new SimpleDateFormat(formatter);
            dateStr = sdf.format(date);
        } catch (Exception e) {
            log.error("格式化日期错误：", e);
        }
        return dateStr;
    }


    /**
     * 比较是否在给定的时间内
     * @param time
     * @param startTime
     * @param EndTime
     * @return
     */
    public static boolean between(Date time, String startTime, String EndTime) {
        if(time == null || StringUtils.isBlank(startTime) || StringUtils.isBlank(EndTime)) {
            return false;
        }
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(formatterStr);
            Date start = sdf.parse(startTime);
            Date end = sdf.parse(EndTime);
            return time.after(start) && time.before(end);
        } catch (ParseException e) {
           log.error("时间转换异常：", e);
           return false;
        }
    }

}
